﻿using OrderStateMachineWebApi.Models;

namespace OrderStateMachineWebApi.Services
{
    public interface IOrderState
    {
        OrderStatus Status { get; }

        Task PayAsync(Order order);
        Task ProcessAsync(Order order);
        Task ShipAsync(Order order);
        Task CompleteAsync(Order order);
        Task CancelAsync(Order order);
        Task StartRefundAsync(Order order);
        Task CompleteRefundAsync(Order order);
    }
}
